/*
 * Copyright 2004-2006 公司名
 * 本软件及其所有拷贝的名称，与光盘上或本软件中注明的公司同在。
 * 本软件及文档享有版权，并受国家版权法及国际协约条款的保护。
 * 您不可以从本软件中去掉其版权声明；并保证为本软件的拷贝（本部或部分）复制版权声明。
 * 您同意制止以任何形式非法拷贝本软件及文档。
 * 版权信息参见：
 *      http://www.companyname.cn/licenses
 */

package com.companyname.common.system.model;

import java.io.Serializable;
import java.sql.Timestamp;

import com.companyname.common.base.math.TimeFormater;
import com.companyname.common.base.model.BaseObject;
import com.companyname.common.system.define.TaskRunningResult;

/**
 * <p>Title: 任务运行情况 </p>
 * <p>Description: 任务运行情况 TaskRunningInfo </p>
 * <p>Copyright: Copyright (c) 2004-2006</p>
 * <p>Company: 公司名</p>
 * @ $Author: 作者名 $
 * @ $Date: 创建日期 $
 * @ $Revision: 1.0 $
 * @ created in 创建日期
 *
 */

public class TaskRunningInfo extends BaseObject
                           implements Serializable
{
        // id
        private String id;

        // 任务代码
        private String taskCode;

        // 任务名
        private String taskName;

        // 时耗(毫秒)
        private long millSecondsTaken;

        // 运行结果(0: 失败 1:成功)
        private int result;

        // 错误信息
        private String errInfo;

        // 开始运行时间
        private Timestamp startTime;

        // 运行结束时间
        private Timestamp endTime;

        /**
         * 构造函数
         */
        public TaskRunningInfo()
        {
                // for hibernate
        }

        public TaskRunningInfo(String taskCode,
                               String taskName,
                               long millSecondsTaken,
                               int result,
                               String errInfo,
                               Timestamp startTime,
                               Timestamp endTime)
        {
                this.taskCode = taskCode;
                this.taskName = taskName;
                this.millSecondsTaken = millSecondsTaken;
                this.result = result;
                this.errInfo = errInfo;
                this.startTime = startTime;
                this.endTime = endTime;
        }

        /** 选用框架提供的pri解决方案，必须 */
        public Serializable getIdentity()
        {
                return this.id;
        }

        // id
        public String getId()
        {
                return this.id;
        }

        public void setId(String id)
        {
                this.id = id;
        }

        // 任务代码
        public String getTaskCode()
        {
                return this.taskCode;
        }

        public void setTaskCode(String taskCode)
        {
                this.taskCode = taskCode;
        }

        // 任务名
        public String getTaskName()
        {
                return this.taskName;
        }

        public void setTaskName(String taskName)
        {
                this.taskName = taskName;
        }

        // 时耗(毫秒)
        public long getMillSecondsTaken()
        {
                return this.millSecondsTaken;
        }
        
        // 时耗（秒）
        public String getFormatedSecondsTaken()
        {
                return TimeFormater.formatMs2SS(this.millSecondsTaken);
        }

        public void setMillSecondsTaken(long millSecondsTaken)
        {
                this.millSecondsTaken = millSecondsTaken;
        }

        // 运行结果
        public int getResult()
        {
                return this.result;
        }
        
        public String getResultName()
        {
                return TaskRunningResult.NAMES[this.result];
        }

        public void setResult(int result)
        {
                this.result = result;
        }

        // 错误信息
        public String getErrInfo()
        {
                return this.errInfo;
        }

        public void setErrInfo(String errInfo)
        {
                this.errInfo = errInfo;
        }

        // 开始运行时间
        public Timestamp getStartTime()
        {
                return this.startTime;
        }

        public String getFormatedStartTime()
        {
                return this.formatDate(this.startTime,"yyyy-MM-dd HH:mm:ss");
        }

        public void setStartTime(Timestamp startTime)
        {
                this.startTime = startTime;
        }

        // 运行结束时间
        public Timestamp getEndTime()
        {
                return this.endTime;
        }

        public String getFormatedEndTime()
        {
                return this.formatDate(this.endTime,"yyyy-MM-dd HH:mm:ss");
        }

        public void setEndTime(Timestamp endTime)
        {
                this.endTime = endTime;
        }

        /** 采用id匹配(会影响到hibernate批量新增)还是全部属性值匹配(编码麻烦) */
        public boolean equals(Object object)
        {
                if (!(object instanceof TaskRunningInfo))
                {
                        return false;
                }
                TaskRunningInfo taskRunningInfo = (TaskRunningInfo) object;
                return ( this.id.equals(taskRunningInfo.getId())
                       &(this.getPri() == taskRunningInfo.getPri())
                       );
        }

        public int hashCode(Object object)
        {
                return ("TaskRunningInfo" + this.id + "_" + this.getPri()).hashCode();
        }

}
